﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QThread>

/*****************************************************************************************
  @Copyright  2020-2021
  @Date       2021-05-24
  @Author     qiaowei
  @Contact    weiweiqiao@126.com
  @Version    1.0
  @Brief      主窗体
  @Other      None
  @History    None
  @Functions  None
******************************************************************************************/

class QMenu;
class QAction;
class Ui_process;
class Track_data;
class Track_data_table_model;
class Track_view_widget;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:

    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

signals:
    void si_send_track_to_model(Track_data* data);

private slots:
    void sl_filter_from_widgets();

private:
    /***************************************************************************
     @Date     2021-05-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    初始化控件
    ***************************************************************************/
    void init_widgets();

    /***************************************************************************
     @Date     2021-05-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    初始化信号槽
    ***************************************************************************/
    void init_connects();

private:
    Ui::MainWindow *ui;

    QMenu* file_menu_;
    QAction* open_file_action_;
    QAction* split_data_action_;
    QAction* exit_action_;

    Track_view_widget* track_widget_;

    /***************************************************************************
     @Date     2021-05-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    UI操作类，处理用户在UI界面上的操作
    ***************************************************************************/
    Ui_process* ui_process_;

    Track_data_table_model* model_;
};

#endif // MAINWINDOW_H
